<?php

class Application_Model_DbTable_Estudiantes extends Zend_Db_Table_Abstract {

    protected $_name = 'estudiantes';

    public function solicitarDatos($facultad) {

        $db = Zend_Db_Table::getDefaultAdapter();
        $select1 = $db->select();
        $select1->from(array('e' => 'estudiantes'), array('e.codigoEstudiante', 'e.nombres', 'e.apellidos'
                    , 'e.nroDocIdentidad', 'huellas' => 'e.huella1'))
                ->join(array('p' => 'proycurriculares'), 'e.codigoProyCurricular = p.codigoProyCurricular and p.codigoFacultad =' . '"' . $facultad . '"'
                        , array('p.nombre'))
                ->join(array('i' => 'inscritos'), 'e.codigoEstudiante = i.codigoEstudiante and i.estadoActual = 1 and i.reservista = 0'
                        , array('i.estadoActual'));
        $select2 = $db->select();
        $select2->from(array('e' => 'estudiantes'), array('e.codigoEstudiante', 'e.nombres', 'e.apellidos'
                    , 'e.nroDocIdentidad', 'huellas' => 'e.huella2'))
                ->join(array('p' => 'proycurriculares'), 'e.codigoProyCurricular = p.codigoProyCurricular and p.codigoFacultad =' . '"' . $facultad . '"'
                        , array('p.nombre'))
                ->join(array('i' => 'inscritos'), 'e.codigoEstudiante = i.codigoEstudiante and i.estadoActual = 1 and i.reservista = 0'
                        , array('i.estadoActual'));
        $select = $db->select()
                ->union(array($select1, $select2), Zend_Db_Select::SQL_UNION_ALL);

        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function solicitarDatosBeneficiarios($facultad) {

        $db = Zend_Db_Table::getDefaultAdapter();
        $select1 = $db->select();
        $select1->from(array('e' => 'estudiantes'), array('e.codigoEstudiante', 'e.nombres', 'e.apellidos'
                    , 'e.nroDocIdentidad', 'huellas' => 'e.huella1'))
                ->join(array('p' => 'proycurriculares'), 'e.codigoProyCurricular = p.codigoProyCurricular and p.codigoFacultad =' . '"' . $facultad . '"'
                        , array('p.nombre'))
                ->join(array('i' => 'inscritos'), 'e.codigoEstudiante = i.codigoEstudiante and i.estadoActual = 1 and i.reservista = 0'
                        , array('i.estadoActual'));
        $select2 = $db->select();
        $select2->from(array('e' => 'estudiantes'), array('e.codigoEstudiante', 'e.nombres', 'e.apellidos'
                    , 'e.nroDocIdentidad', 'huellas' => 'e.huella2'))
                ->join(array('p' => 'proycurriculares'), 'e.codigoProyCurricular = p.codigoProyCurricular and p.codigoFacultad =' . '"' . $facultad . '"'
                        , array('p.nombre'))
                ->join(array('i' => 'inscritos'), 'e.codigoEstudiante = i.codigoEstudiante and i.estadoActual = 1 and i.reservista = 0'
                        , array('i.estadoActual'));
        $select = $db->select()
                ->union(array($select1, $select2), Zend_Db_Select::SQL_UNION_ALL);

        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function existe($codigo) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('estudiantes'), array('count' => 'count(codigoEstudiante)'))
                ->where('codigoEstudiante = ?', $codigo);
        $resultados = Zend_Db_Table::getDefaultAdapter()->fetchRow($select);

        if ($resultados["count"] > 0) {
            return true;
        } else {
            return false;
        }
    }

    public function verificar($codigo) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('estudiantes'), array('count' => 'count(codigoEstudiante)'))
                ->where('codigoEstudiante = ?', $codigo);
        $resultados = Zend_Db_Table::getDefaultAdapter()->fetchRow($select);
        return $resultados["count"];
    }

    public function consultarDatosBasicosApplet($codigo) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                //->from('estudiantes')
                ->from(array('e' => 'estudiantes'), array('e.codigoEstudiante', 'e.nombres', 'e.apellidos', 'e.nroDocIdentidad'))
                ->join(array('p' => 'proycurriculares'), 'e.codigoProyCurricular = p.codigoProyCurricular', array('p.nombre'))
                ->where('e.codigoEstudiante = ?', $codigo);
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
        /*
          $query = $this->fetchRow('codigoEstudiante = ' . $codigo);
          if (!$query) {
          throw new Exception("Could not find row $id");
          }
          return $query;
         */
    }

    public function consultar($codigo) {
        /*$db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('e' => 'estudiantes'))
                ->where('codigoEstudiante = ?', $codigo);
        return Zend_Db_Table::getDefaultAdapter()->fetchRow($select);*/
        
          $query = $this->fetchRow('codigoEstudiante = ' . $codigo);
          if (!$query) {
          throw new Exception("Could not find row $id");
          }
          return $query;
        
    }
    
    
    public function agregar($codigo, $carrera, $nombres, $apellidos, $documento, $tipoDocumento, $fechaNacimiento, $genero, $email, $ciudadResidencia, $localidad, $barrio, $direccion, $estrato, $semestre, $telefono, $celular, $deRepele) {

        $data = array(
            'codigoEstudiante' => $codigo,
            'codigoProyCurricular' => $carrera,
            'nombres' => $nombres,
            'apellidos' => $apellidos,
            'nroDocIdentidad' => $documento,
            'tipoDocIdentidad' => $tipoDocumento,
            'fechaNacimiento' => $fechaNacimiento,
            'genero' => $genero,
            'email' => $email,
            'idCiudadResidencia' => $ciudadResidencia,
            'localidadResidencia' => $localidad,
            'barrioResidencia' => $barrio,
            'direccionResidencia' => $direccion,
            'estratoResidencia' => $estrato,
            'semestre' => $semestre,
            'telefono' => $telefono,
            'celular' => $celular,
            'huella1' => '*',
            'huella2' => '*',
            'deRepele' => $deRepele
        );
        $this->insert($data);
    }

    public function actualizar($codigo, $carrera, $nombres, $apellidos, $documento, $tipoDocumento, $fechaNacimiento, $genero, $email, $ciudadResidencia, $localidad, $barrio, $direccion, $estrato, $semestre, $telefono, $celular, $deRepele) {

        $data = array(
            'codigoEstudiante' => $codigo,
            'codigoProyCurricular' => $carrera,
            'nombres' => $nombres,
            'apellidos' => $apellidos,
            'nroDocIdentidad' => $documento,
            'tipoDocIdentidad' => $tipoDocumento,
            'fechaNacimiento' => $fechaNacimiento,
            'genero' => $genero,
            'email' => $email,
            'idCiudadResidencia' => $ciudadResidencia,
            'localidadResidencia' => $localidad,
            'barrioResidencia' => $barrio,
            'direccionResidencia' => $direccion,
            'estratoResidencia' => $estrato,
            'semestre' => $semestre,
            'telefono' => $telefono,
            'celular' => $celular,
            'huella1' => '*',
            'huella2' => '*',
            'deRepele' => $deRepele
        );
        $this->update($data, 'codigoEstudiante = ' . $codigo);
    }

    public function enrolar($codigo, $huella, $peticion) {

        if ($peticion == 1) {
            $data = array('huella1' => $huella);
        } else if ($peticion == 2) {
            $data = array('huella2' => $huella);
        }
        $this->update($data, 'codigoEstudiante = ' . $codigo);

        return true;
    }

    public function solicitarDatos2() {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select1 = $db->select();
        $select1->from(array('e' => 'estudiantes'), array('e.codigoEstudiante', 'e.nombres', 'e.apellidos'
            , 'e.nroDocIdentidad', 'huellas' => 'e.huella1'));
        $select2 = $db->select();
        $select2->from(array('e' => 'estudiantes'), array('e.codigoEstudiante', 'e.nombres', 'e.apellidos'
            , 'e.nroDocIdentidad', 'huellas' => 'e.huella2'));
        $select = $db->select()
                ->union(array($select1, $select2), Zend_Db_Select::SQL_UNION_ALL);

        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function consulta_general_Beneficiarios() {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('e' => 'estudiantes'), array('e.codigoEstudiante', 'e.nombres', 'e.apellidos'
                    , 'e.nroDocIdentidad', 'e.tipoDocIdentidad', 'e.email'))
                ->join(array('p' => 'proycurriculares'), 'e.codigoProyCurricular = p.codigoProyCurricular'
                        , array('nombreCarrera' => 'p.nombre'))
                ->join(array('f' => 'facultades'), 'f.codigoFacultad = p.codigoFacultad'// and p.codigoFacultad = e.codigoProyCurricular'
                        , array('f.nombreFacultad'))
                ->join(array('i' => 'inscritos'), 'e.codigoEstudiante = i.codigoEstudiante and i.estadoActual = 1 and i.reservista = 0 and i.tipoAuxilio != "N"'
                        , array('i.tipoAuxilio'));
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function consulta_facultad_Beneficiarios($facultad) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('e' => 'estudiantes'), array('e.codigoEstudiante', 'e.nombres', 'e.apellidos'
                    , 'e.nroDocIdentidad', 'e.tipoDocIdentidad', 'e.email'))
                ->join(array('p' => 'proycurriculares'), 'e.codigoProyCurricular = p.codigoProyCurricular and p.codigoFacultad =' . '"' . $facultad . '"'
                        , array('nombreCarrera' => 'p.nombre'))
                ->join(array('f' => 'facultades'), 'f.codigoFacultad = p.codigoFacultad'// and p.codigoFacultad = e.codigoProyCurricular'
                        , array('f.nombreFacultad'))
                ->join(array('i' => 'inscritos'), 'e.codigoEstudiante = i.codigoEstudiante and i.estadoActual = 1 and i.reservista = 0 and i.tipoAuxilio != "N"'
                        , array('i.tipoAuxilio'));
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

    public function consulta_general_Repele() {

        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('e' => 'estudiantes'), array('e.codigoEstudiante', 'e.nombres', 'e.apellidos'
                    , 'e.nroDocIdentidad', 'e.tipoDocIdentidad', 'e.email'))
                ->join(array('p' => 'proycurriculares'), 'e.codigoProyCurricular = p.codigoProyCurricular'
                        , array('nombreCarrera' => 'p.nombre'))
                ->join(array('f' => 'facultades'), 'f.codigoFacultad = p.codigoFacultad'// and p.codigoFacultad = e.codigoProyCurricular'
                        , array('f.nombreFacultad'));
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }
    
        public function consulta_facultad_Repele($facultad) {

        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select();
        $select->from(array('e' => 'estudiantes'), array('e.codigoEstudiante', 'e.nombres', 'e.apellidos'
                    , 'e.nroDocIdentidad', 'e.tipoDocIdentidad', 'e.email'))
                ->join(array('p' => 'proycurriculares'), 'e.codigoProyCurricular = p.codigoProyCurricular and p.codigoFacultad =' . '"' . $facultad . '"'
                        , array('nombreCarrera' => 'p.nombre'))
                ->join(array('f' => 'facultades'), 'f.codigoFacultad = p.codigoFacultad'// and p.codigoFacultad = e.codigoProyCurricular'
                        , array('f.nombreFacultad'));
        return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
    }

}

